package com.xxrl.shop.repository;

import com.xxrl.shop.domain.Merchant;
import com.xxrl.shop.domain.Product;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

/**
 * @author mis
 */
public interface ProductRepository extends JpaRepository<Product, Long> {

    @Query("select sum (p.viewCount) from Product p group by p.id")
    long countVisit();

    /**
     * 根据商家返回商品
     *
     * @param merchant 商家
     * @param pageable 分页
     * @return 分页后的商品集合
     */
    Page<Product> queryProductsByMerchant(Merchant merchant, Pageable pageable);

    /**
     * 根据价格区间查询
     * @param pageable 分页
     * @param gt 最小值闭区间
     * @param let 最大值闭区间
     * @return 分页后的商品集合
     */
    Page<Product> findAllByPricesBetween(Pageable pageable, Integer gt, Integer let);

    /**
     * 根据关键字查询商品
     * TODO： 关键字逻辑有问题
     * @param keywords 关键字
     * @param pageable 分页
     * @return 分页后的商品集合
     */
    Page<Product> queryProductsByKeywordsIsContaining(String keywords, Pageable pageable);

    /**
     * 根据一级分类查询
     * @param mainType 一级分类
     * @param pageable 分页
     * @return 分页后的商品集合
     */
    Page<Product> queryProductsByMainType(String mainType, Pageable pageable);
    /**
     * 根据二级分类查询
     * @param subType 二级分类
     * @param pageable 分页
     * @return 分页后的商品集合
     */
    Page<Product> queryProductsBySubType(String subType, Pageable pageable);

}
